From: Carlos Garnacho Date: Thu, 24 Jul 2014 16:24:56 +0000 (+0200) Subject: keyboard: Handle touch events X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2306 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a84fb99c0aca9fd6eeb83a270c48113133e89de2;p=gnome-shell.git keyboard: Handle touch events Handle touch events, so that an interacted button locks to a single sequence, but multiple sequences are free to interact with multiple key buttons. https://bugzilla.gnome.org/show_bug.cgi?id=733633 --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index cfce86142..3805fb0b7 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -90,6 +90,25 @@ const Key = new Lang.Class({ key.release(); return Clutter.EVENT_PROPAGATE; })); + button.connect('touch-event', Lang.bind(this, + function (actor, event) { + let device = event.get_device(); + let sequence = event.get_event_sequence(); + + if (!this._touchPressed && + event.type() == Clutter.EventType.TOUCH_BEGIN) { + device.sequence_grab(sequence, actor); + this._touchPressed = true; + key.press(); + } else if (this._touchPressed && + event.type() == Clutter.EventType.TOUCH_END && + device.sequence_get_grabbed_actor(sequence) == actor) { + device.sequence_ungrab(sequence); + this._touchPressed = false; + key.release(); + } + return Clutter.EVENT_PROPAGATE; + })); return button; },